#ifndef GAME_H
#define GAME_H
#include "Singleton.h"
#include "NonCopyable.h"
#include <vector>
#include <string>

#include "EventHandler.h"

class GameState;
class AutoSprite;
struct SDL_Surface;

class Game : public NonCopyable, public EventHandler
{
private:
	Game();
	~Game();
	friend class Singleton<Game>;
public:
	void Run();
	void SetGameState(GameState* state);
	void ActualChangeofState();
	bool Load(const std::string& filename);
	AutoSprite* GetObj();
	void QuitGame(){m_running = false;}

private:
	void Update();
	void Draw();

	GameState*						m_currentState;
	//GameState*						m_newState;
	bool m_running;

};

typedef Singleton<Game> TheGame;

#endif
